home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / dragpic3 / form1.frm < prev    next >
Text File  |  1998-04-20  |  5KB  |  167 lines

  1. VERSION 4.00
  2. Begin VB.Form Form1 
  3.    Caption         =   "Form1"
  4.    ClientHeight    =   5385
  5.    ClientLeft      =   660
  6.    ClientTop       =   600
  7.    ClientWidth     =   3840
  8.    Height          =   5790
  9.    Left            =   600
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   5385
  12.    ScaleWidth      =   3840
  13.    Top             =   255
  14.    Width           =   3960
  15.    Begin VB.PictureBox picHidden 
  16.       AutoRedraw      =   -1  'True
  17.       AutoSize        =   -1  'True
  18.       BorderStyle     =   0  'None
  19.       Height          =   5325
  20.       Left            =   1800
  21.       Picture         =   "Form1.frx":0000
  22.       ScaleHeight     =   355
  23.       ScaleMode       =   3  'Pixel
  24.       ScaleWidth      =   251
  25.       TabIndex        =   3
  26.       Top             =   2400
  27.       Visible         =   0   'False
  28.       Width           =   3765
  29.    End
  30.    Begin VB.PictureBox picXMask 
  31.       AutoRedraw      =   -1  'True
  32.       AutoSize        =   -1  'True
  33.       BorderStyle     =   0  'None
  34.       Height          =   1605
  35.       Left            =   2280
  36.       Picture         =   "Form1.frx":8301
  37.       ScaleHeight     =   107
  38.       ScaleMode       =   3  'Pixel
  39.       ScaleWidth      =   91
  40.       TabIndex        =   1
  41.       Top             =   1800
  42.       Visible         =   0   'False
  43.       Width           =   1365
  44.    End
  45.    Begin VB.PictureBox picX 
  46.       AutoRedraw      =   -1  'True
  47.       AutoSize        =   -1  'True
  48.       BorderStyle     =   0  'None
  49.       Height          =   1605
  50.       Left            =   2760
  51.       Picture         =   "Form1.frx":F69F
  52.       ScaleHeight     =   107
  53.       ScaleMode       =   3  'Pixel
  54.       ScaleWidth      =   91
  55.       TabIndex        =   0
  56.       Top             =   1320
  57.       Visible         =   0   'False
  58.       Width           =   1365
  59.    End
  60.    Begin VB.PictureBox picCanvas 
  61.       AutoRedraw      =   -1  'True
  62.       AutoSize        =   -1  'True
  63.       Height          =   5385
  64.       Left            =   0
  65.       Picture         =   "Form1.frx":16A3D
  66.       ScaleHeight     =   355
  67.       ScaleMode       =   3  'Pixel
  68.       ScaleWidth      =   251
  69.       TabIndex        =   2
  70.       Top             =   0
  71.       Width           =   3825
  72.    End
  73. End
  74. Attribute VB_Name = "Form1"
  75. Attribute VB_Creatable = False
  76. Attribute VB_Exposed = False
  77. Option Explicit
  78.  
  79. Private Const MERGEPAINT = &HBB0226
  80. Private Const SRCAND = &H8800C6
  81. Private Const SRCCOPY = &HCC0020
  82. Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  83.  
  84. ' Variables for positioning the image.
  85. Dim OldX As Single
  86. Dim OldY As Single
  87. Dim CurX As Single
  88. Dim CurY As Single
  89. Dim OffsetX As Single
  90. Dim OffsetY As Single
  91. Dim PicWid As Single
  92. Dim PicHgt As Single
  93. Dim Xmax As Single
  94. Dim Ymax As Single
  95. Dim Dragging As Boolean
  96. ' Draw the picture at (CurX, CurY).
  97. Private Sub DrawPicture()
  98.     ' Fix the part of the image that was covered.
  99.     BitBlt picCanvas.hDC, _
  100.         OldX, OldY, PicWid, PicHgt, _
  101.         picHidden.hDC, OldX, OldY, SRCCOPY
  102.     OldX = CurX
  103.     OldY = CurY
  104.  
  105.     ' Paint on the new image.
  106.     BitBlt picCanvas.hDC, _
  107.         CurX, CurY, PicWid, PicHgt, _
  108.         picXMask.hDC, 0, 0, MERGEPAINT
  109.     BitBlt picCanvas.hDC, _
  110.         CurX, CurY, PicWid, PicHgt, _
  111.         picX.hDC, 0, 0, SRCAND
  112.  
  113.     ' Update the display.
  114.     picCanvas.Refresh
  115. End Sub
  116.  
  117. ' Save picCanvas's original bitmap bytes,
  118. ' initialize values, and draw the initial picture.
  119. Private Sub Form_Load()
  120.     ' Make the form fit the picture.
  121.     Width = (Width - ScaleWidth) + picCanvas.Width
  122.     Height = (Height - ScaleHeight) + picCanvas.Height
  123.  
  124.     PicWid = picX.ScaleWidth
  125.     PicHgt = picX.ScaleHeight
  126.     Xmax = picCanvas.ScaleWidth - PicWid
  127.     Ymax = picCanvas.ScaleHeight - PicHgt
  128.     OldX = 30
  129.     OldY = 30
  130.     CurX = 30
  131.     CurY = 30
  132.     
  133.     DrawPicture
  134. End Sub
  135.  
  136. Private Sub picCanvas_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  137.     ' See if this point corresponds to
  138.     ' a black point on the mask.
  139.     If picXMask.Point(x - CurX, y - CurY) <> vbBlack Then Exit Sub
  140.  
  141.     ' Start dragging.
  142.     Dragging = True
  143.     OffsetX = CurX - x
  144.     OffsetY = CurY - y
  145. End Sub
  146.  
  147. ' Continue dragging.
  148. Private Sub picCanvas_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  149.     If Not Dragging Then Exit Sub
  150.     
  151.     CurX = x + OffsetX
  152.     CurY = y + OffsetY
  153.     
  154.     If CurX < 0 Then CurX = 0
  155.     If CurX > Xmax Then CurX = Xmax
  156.     If CurY < 0 Then CurY = 0
  157.     If CurY > Ymax Then CurY = Ymax
  158.     
  159.     DrawPicture
  160. End Sub
  161.  
  162.  
  163. ' Stop dragging.
  164. Private Sub picCanvas_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  165.     Dragging = False
  166. End Sub
  167.